package mylab.starters.mybatis.config.dynamicTable;

import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
import com.google.common.collect.Maps;
import lombok.Getter;
import mylab.utils.common.ReflectUtil;

import java.util.Map;

/**
 * 动态表配置
 */
@Getter
public class DynamicTableProperties {
    /**
     * 是否启用 动态表名插件
     */
    private boolean enable = true;
    /**
     * 是否自动创建动态表
     */
    private boolean autoCreateTable = true;
    /**
     * 表名与handler对应表
     * key    -- 表名
     * value  --  TableNameHandler实现类
     */
    private Map<String, String> tables = Maps.newHashMap();

    public TableNameHandler getHandlerByTable(String table) {
        return tables.containsKey(table) ? fromClass(tables.get(table)) : null;
    }

    private TableNameHandler fromClass(String classFullName) {
        return ReflectUtil.toInstance(classFullName);
    }
}